In general, a storage system refers to a system of one or more processing systems and storage devices where data is stored on data storage devices such that the data can be made available to the processing systems. A computer with a hard disk drive is an example of a storage system. In another example, a storage system includes a network attached storage system.
In a storage system, applications executed by or embedded in a processing system normally send requests for data stored on the data storage devices. Servicing these reads can be slow because of the high latency of disk reads. If the reads can be predicted, the high latency of reading from disks can be compensated by issuing disk reads before the data is requested. In particular, when an application requests blocks of data that are sequential (or one after the other), speculative read-ahead can be applied on those sequential blocks where portions of these blocks are read from disk into a cache before the application requests these portions.
Most read-ahead implementations are overly aggressive, erring on the side of reading speculatively far faster than consumption by the applications. Such reading ahead too soon can cause other data in cache to be evicted before access by other applications. Without quick access to this data in the cache, functionalities provided by these other applications may be delayed. On the other hand, read-ahead implementations where reading data too late can cause the sequential workload to slow down.